/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package interfaz;

import dominio.Especialidad;
import dominio.Subarea;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListModel;
import negocio.EspecialidadNegocio;
import utilidades.JFondo;

/**
 *
 * @author Richard
 */
public class JIF_Especialidad extends javax.swing.JInternalFrame {

    /**
     * Creates new form JIF_insertarAsignatura
     */
    private LinkedList<Subarea> subareas;
    private int accion = 0; //1=Insertar,2=Modificar y 3=Eliminar
    private EspecialidadNegocio especialidadBus = new EspecialidadNegocio();
    private Especialidad especialidad = new Especialidad();
    private LinkedList<Especialidad> especialidades;

    public JIF_Especialidad() throws SQLException {
        initComponents();
        JP_insertarAsignatura.setBorder(new JFondo("../imagenes/fondo_1.jpg"));
        JL_ID.setVisible(false);
        JTF_ID.setVisible(false);
        JL_Nombre.setVisible(false);
        JTF_Nombre.setVisible(false);
        JLabel_Subareas.setVisible(false);
        jScrollPane1.setVisible(false);
        JList_Subareas.setVisible(false);
        JB_Aceptar.setVisible(false);
        JB_Buscar.setVisible(false);
        JB_Eliminar.setVisible(false);
        JL_listaEspecialidades.setVisible(false);
        JL_Especialidades.setVisible(false);
        jScrollPane2.setVisible(false);
        cargaListaEspecialidades();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        JP_insertarAsignatura = new javax.swing.JPanel();
        JL_Titulo = new javax.swing.JLabel();
        JL_ID = new javax.swing.JLabel();
        JTF_ID = new javax.swing.JTextField();
        JL_Nombre = new javax.swing.JLabel();
        JTF_Nombre = new javax.swing.JTextField();
        JLabel_Subareas = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        JList_Subareas = new javax.swing.JList();
        JB_Aceptar = new javax.swing.JButton();
        JB_Buscar = new javax.swing.JButton();
        JB_Eliminar = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        JL_Especialidades = new javax.swing.JList();
        JL_listaEspecialidades = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        JMI_nuevaAsignatura = new javax.swing.JMenu();
        JMI_Ingresar = new javax.swing.JMenuItem();
        JMI_editar = new javax.swing.JMenu();
        JMI_Modificar = new javax.swing.JMenuItem();
        JMI_borrar = new javax.swing.JMenu();
        JMI_Eliminar = new javax.swing.JMenuItem();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Mantenimiento Especialidad");
        setMaximumSize(new java.awt.Dimension(1000, 500));
        setMinimumSize(new java.awt.Dimension(100, 50));
        setName(""); // NOI18N
        setPreferredSize(new java.awt.Dimension(1000, 500));

        JL_Titulo.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        JL_Titulo.setText("Especialidad");

        JL_ID.setText("Identificación:");

        JTF_ID.setEnabled(false);

        JL_Nombre.setText("Nombre:");

        JTF_Nombre.setMaximumSize(new java.awt.Dimension(25, 25));
        JTF_Nombre.setMinimumSize(new java.awt.Dimension(25, 25));

        JLabel_Subareas.setText("Subareas:");

        JList_Subareas.setForeground(new java.awt.Color(255, 255, 255));
        JList_Subareas.setOpaque(false);
        JList_Subareas.setVerifyInputWhenFocusTarget(false);
        JList_Subareas.setVisibleRowCount(5);
        jScrollPane1.setViewportView(JList_Subareas);
        JList_Subareas.getAccessibleContext().setAccessibleName("");

        JB_Aceptar.setText("Aceptar");
        JB_Aceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JB_AceptarActionPerformed(evt);
            }
        });

        JB_Buscar.setText("Buscar");
        JB_Buscar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JB_BuscarActionPerformed(evt);
            }
        });

        JB_Eliminar.setText("Eliminar");
        JB_Eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JB_EliminarActionPerformed(evt);
            }
        });

        JL_Especialidades.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane2.setViewportView(JL_Especialidades);

        JL_listaEspecialidades.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        JL_listaEspecialidades.setText("Especialidades");

        javax.swing.GroupLayout JP_insertarAsignaturaLayout = new javax.swing.GroupLayout(JP_insertarAsignatura);
        JP_insertarAsignatura.setLayout(JP_insertarAsignaturaLayout);
        JP_insertarAsignaturaLayout.setHorizontalGroup(
            JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                .addGap(102, 102, 102)
                .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                        .addGap(86, 86, 86)
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                                .addComponent(JB_Aceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(677, Short.MAX_VALUE))
                            .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                                .addComponent(JL_Titulo)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(JL_listaEspecialidades)
                                .addGap(178, 178, 178))))
                    .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(JLabel_Subareas)
                            .addComponent(JL_Nombre)
                            .addComponent(JL_ID))
                        .addGap(36, 36, 36)
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(JTF_ID)
                            .addComponent(JTF_Nombre, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(JB_Buscar)
                            .addComponent(JB_Eliminar))
                        .addGap(90, 90, 90)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 308, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(31, 31, 31))))
        );
        JP_insertarAsignaturaLayout.setVerticalGroup(
            JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                .addGap(37, 37, 37)
                .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(JL_Titulo)
                    .addComponent(JL_listaEspecialidades))
                .addGap(52, 52, 52)
                .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(JL_ID)
                            .addComponent(JTF_ID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(JB_Buscar))
                        .addGap(25, 25, 25)
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(JL_Nombre)
                            .addComponent(JTF_Nombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addGroup(JP_insertarAsignaturaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(JLabel_Subareas)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(JP_insertarAsignaturaLayout.createSequentialGroup()
                                .addGap(22, 22, 22)
                                .addComponent(JB_Eliminar))))
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(58, 58, 58)
                .addComponent(JB_Aceptar)
                .addContainerGap(68, Short.MAX_VALUE))
        );

        JMI_nuevaAsignatura.setText("Ingresar");

        JMI_Ingresar.setText("Ingresar Especialidad");
        JMI_Ingresar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JMI_IngresarActionPerformed(evt);
            }
        });
        JMI_nuevaAsignatura.add(JMI_Ingresar);

        jMenuBar1.add(JMI_nuevaAsignatura);

        JMI_editar.setText("Modificar");

        JMI_Modificar.setText("Modificar Especialidad");
        JMI_Modificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JMI_ModificarActionPerformed(evt);
            }
        });
        JMI_editar.add(JMI_Modificar);

        jMenuBar1.add(JMI_editar);

        JMI_borrar.setText("Eliminar");

        JMI_Eliminar.setText("Eliminar Especialidad");
        JMI_Eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JMI_EliminarActionPerformed(evt);
            }
        });
        JMI_borrar.add(JMI_Eliminar);

        jMenuBar1.add(JMI_borrar);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(JP_insertarAsignatura, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(JP_insertarAsignatura, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void JB_AceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_AceptarActionPerformed
        try {
            
            Especialidad especialidad = new Especialidad();
            
            switch (accion) {
                case 1:
                    especialidad.setNombreEspecialidad(JTF_Nombre.getText());
                    especialidadBus.ingresarEspecialidad(especialidad);
                    cargaListaEspecialidades();
                    break;
                case 2:
                    especialidad.setIdEspecialidad(Integer.parseInt(JTF_ID.getText().trim()));
                    especialidad.setNombreEspecialidad(JTF_Nombre.getText());
                    especialidad.setSubareas(subareas);
                    especialidadBus.modificarEspecialidad(especialidad);
                    cargaListaEspecialidades();
                    break;
                case 3:
                    especialidad.setIdEspecialidad(Integer.parseInt(JTF_ID.getText().trim()));
                    especialidadBus.eliminarEspecialidad(especialidad);
                    cargaListaEspecialidades();
                    break;
            }
        } catch (SQLException ex) {
            Logger.getLogger(JIF_Especialidad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_JB_AceptarActionPerformed

    private void cargaListaEspecialidades() throws SQLException{
         especialidades = especialidadBus.getEspecialidades();
         DefaultListModel modelo = new DefaultListModel();
         JL_Especialidades.setModel(modelo);
         
         for (Especialidad especialidadTemp : especialidades) {
            modelo.addElement(especialidadTemp);
        }
         
    }
    
    
    private void JMI_IngresarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JMI_IngresarActionPerformed
        JL_Titulo.setText("Ingresar Especialidad");
        JL_Nombre.setVisible(true);
        JTF_Nombre.setVisible(true);
        JTF_Nombre.setEnabled(true);
        JB_Aceptar.setVisible(true);
        JL_ID.setVisible(false);
        JTF_ID.setVisible(false);
        JLabel_Subareas.setVisible(false);
        jScrollPane1.setVisible(false);
        JList_Subareas.setVisible(false);
        JB_Buscar.setVisible(false);
        JB_Eliminar.setVisible(false);
        JL_listaEspecialidades.setVisible(true);
        JL_Especialidades.setVisible(true);
        jScrollPane2.setVisible(true);
        accion = 1;
        try {
            cargaListaEspecialidades();
        } catch (SQLException ex) {
            Logger.getLogger(JIF_Especialidad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_JMI_IngresarActionPerformed

    private void JMI_ModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JMI_ModificarActionPerformed
        JL_Titulo.setText("Modificar Especialidad");
        JL_Nombre.setVisible(true);
        JTF_Nombre.setVisible(true);
        JTF_Nombre.setEnabled(false);
        JB_Aceptar.setVisible(true);
        JL_ID.setVisible(true);
        JTF_ID.setVisible(true);
        JLabel_Subareas.setVisible(false);
        jScrollPane1.setVisible(true);
        JList_Subareas.setVisible(true);
        JList_Subareas.setEnabled(false);
        JB_Buscar.setVisible(true);
        JB_Eliminar.setVisible(false);
        JL_listaEspecialidades.setVisible(true);
        JL_Especialidades.setVisible(true);
        jScrollPane2.setVisible(true);
        accion = 2;
        try {
            cargaListaEspecialidades();
        } catch (SQLException ex) {
            Logger.getLogger(JIF_Especialidad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_JMI_ModificarActionPerformed

    private void JMI_EliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JMI_EliminarActionPerformed
        JL_Titulo.setText("Eliminar Especialidad");
        JL_Nombre.setVisible(true);
        JTF_Nombre.setVisible(true);
        JTF_Nombre.setEnabled(false);
        JB_Aceptar.setVisible(true);
        JL_ID.setVisible(true);
        JTF_ID.setVisible(true);
        JLabel_Subareas.setVisible(true);
        jScrollPane1.setVisible(true);
        JList_Subareas.setVisible(true);
        JList_Subareas.setEnabled(false);
        JB_Buscar.setVisible(true);
        JB_Eliminar.setVisible(false);
        JB_Aceptar.setEnabled(false);
        JL_listaEspecialidades.setVisible(true);
        JL_Especialidades.setVisible(true);
        jScrollPane2.setVisible(true);
        accion = 3;
        try {
            cargaListaEspecialidades();
        } catch (SQLException ex) {
            Logger.getLogger(JIF_Especialidad.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_JMI_EliminarActionPerformed

    private void JB_BuscarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_BuscarActionPerformed
        
        try {
            Especialidad temp = (Especialidad)JL_Especialidades.getSelectedValue();
            System.out.println(temp.getIdEspecialidad());
            especialidad.setIdEspecialidad(temp.getIdEspecialidad());
            especialidad = especialidadBus.buscaEspecialidad(especialidad);
                    } catch (SQLException ex) {
            Logger.getLogger(JIF_Especialidad.class.getName()).log(Level.SEVERE, null, ex);
        }
        JTF_ID.setText(especialidad.getIdEspecialidad()+"");
        JTF_Nombre.setText(especialidad.getNombreEspecialidad());
        
        subareas = especialidad.getSubareas();
        
         DefaultListModel modelo = new DefaultListModel();
         JList_Subareas.setModel(modelo);
         
         for (Subarea subarea : subareas) {
             System.out.println(""+subarea.getSigla());
            modelo.addElement(subarea);
        }
         
        JTF_Nombre.setText(especialidad.getNombreEspecialidad());
        JTF_Nombre.setEnabled(true);
        JList_Subareas.setEnabled(true);
        JB_Eliminar.setVisible(true);
        JB_Aceptar.setEnabled(true);
    }//GEN-LAST:event_JB_BuscarActionPerformed

    private void JB_EliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_EliminarActionPerformed
        Vector<String> subareas = new Vector();
        System.out.println(""+JList_Subareas.getMinSelectionIndex());
        if(JList_Subareas.getMinSelectionIndex()!=-1){
            especialidad.getSubareas().remove(JList_Subareas.getSelectedIndex());             
            for (Subarea subarea : especialidad.getSubareas()) {
                subareas.add(subarea.getSigla());
            }
            JList_Subareas.setListData(subareas);
        }
        else
            JOptionPane.showMessageDialog(rootPane, "No hay subareas para eliminar", "ADVERTENCIA",JOptionPane.WARNING_MESSAGE);
    }//GEN-LAST:event_JB_EliminarActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton JB_Aceptar;
    private javax.swing.JButton JB_Buscar;
    private javax.swing.JButton JB_Eliminar;
    private javax.swing.JList JL_Especialidades;
    private javax.swing.JLabel JL_ID;
    private javax.swing.JLabel JL_Nombre;
    private javax.swing.JLabel JL_Titulo;
    private javax.swing.JLabel JL_listaEspecialidades;
    private javax.swing.JLabel JLabel_Subareas;
    private javax.swing.JList JList_Subareas;
    private javax.swing.JMenuItem JMI_Eliminar;
    private javax.swing.JMenuItem JMI_Ingresar;
    private javax.swing.JMenuItem JMI_Modificar;
    private javax.swing.JMenu JMI_borrar;
    private javax.swing.JMenu JMI_editar;
    private javax.swing.JMenu JMI_nuevaAsignatura;
    private javax.swing.JPanel JP_insertarAsignatura;
    private javax.swing.JTextField JTF_ID;
    private javax.swing.JTextField JTF_Nombre;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    // End of variables declaration//GEN-END:variables
}
